package br.com.acs.CameraIP.model;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.OneToMany;

@Entity
public class Cliente implements Serializable {
   @Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((ativo == null) ? 0 : ativo.hashCode());
	result = prime * result + ((bairro == null) ? 0 : bairro.hashCode());
	result = prime * result + ((cep == null) ? 0 : cep.hashCode());
	result = prime * result + ((cidade == null) ? 0 : cidade.hashCode());
	result = prime * result + ((cnpj == null) ? 0 : cnpj.hashCode());
	result = prime * result + ((email == null) ? 0 : email.hashCode());
	result = prime * result + ((endereco == null) ? 0 : endereco.hashCode());
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	result = prime * result + Arrays.hashCode(logomarca);
	result = prime * result
			+ ((nomeFantasia == null) ? 0 : nomeFantasia.hashCode());
	result = prime * result
			+ ((razaoSocial == null) ? 0 : razaoSocial.hashCode());
	result = prime * result + ((site == null) ? 0 : site.hashCode());
	result = prime * result + ((telefone == null) ? 0 : telefone.hashCode());
	result = prime * result
			+ ((tipoCliente == null) ? 0 : tipoCliente.hashCode());
	result = prime * result + ((uf == null) ? 0 : uf.hashCode());
	result = prime * result + ((usuarios == null) ? 0 : usuarios.hashCode());
	return result;
}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Cliente other = (Cliente) obj;
		if (ativo == null) {
			if (other.ativo != null)
				return false;
		} else if (!ativo.equals(other.ativo))
			return false;
		if (bairro == null) {
			if (other.bairro != null)
				return false;
		} else if (!bairro.equals(other.bairro))
			return false;
		if (cep == null) {
			if (other.cep != null)
				return false;
		} else if (!cep.equals(other.cep))
			return false;
		if (cidade == null) {
			if (other.cidade != null)
				return false;
		} else if (!cidade.equals(other.cidade))
			return false;
		if (cnpj == null) {
			if (other.cnpj != null)
				return false;
		} else if (!cnpj.equals(other.cnpj))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (endereco == null) {
			if (other.endereco != null)
				return false;
		} else if (!endereco.equals(other.endereco))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (!Arrays.equals(logomarca, other.logomarca))
			return false;
		if (nomeFantasia == null) {
			if (other.nomeFantasia != null)
				return false;
		} else if (!nomeFantasia.equals(other.nomeFantasia))
			return false;
		if (razaoSocial == null) {
			if (other.razaoSocial != null)
				return false;
		} else if (!razaoSocial.equals(other.razaoSocial))
			return false;
		if (site == null) {
			if (other.site != null)
				return false;
		} else if (!site.equals(other.site))
			return false;
		if (telefone == null) {
			if (other.telefone != null)
				return false;
		} else if (!telefone.equals(other.telefone))
			return false;
		if (tipoCliente == null) {
			if (other.tipoCliente != null)
				return false;
		} else if (!tipoCliente.equals(other.tipoCliente))
			return false;
		if (uf == null) {
			if (other.uf != null)
				return false;
		} else if (!uf.equals(other.uf))
			return false;
		if (usuarios == null) {
			if (other.usuarios != null)
				return false;
		} else if (!usuarios.equals(other.usuarios))
			return false;
		return true;
	}
private static final long serialVersionUID = 1L;
   @Id
   @GeneratedValue
   private Long id;
   @Column(unique = true)
   private String razaoSocial;
   @Column(unique = true)
   private String nomeFantasia;
   @Column(unique = true)
   private String tipoCliente;
   private String cnpj;
   private String endereco;
   private String bairro;
   private String cep;
   private String cidade;
   private String uf;
   private String site;
   private String email;
   @Column(columnDefinition="LONGBLOB")
   private byte[] logomarca;
   private String ativo;
   private String telefone;
   transient Long idClienteSelecionado;
   
 
   public Cliente() {
   }
 
   public Cliente(long id, String razaoSocial,String nomeFantasia, String tipoCliente,  String cnpj,String endereco, String bairro, String cep, String cidade, String uf, String site, String email, byte[] logomarca,String ativo,String telefone){
      this.id           = id;
      this.razaoSocial  = razaoSocial;
      this.nomeFantasia = nomeFantasia;
      this.tipoCliente  = tipoCliente;
      this.cnpj         = cnpj;
      this.endereco     = endereco;
      this.bairro       = bairro;
      this.cep          = cep;
      this.cidade       = cidade;
      this.uf           = uf;
      this.site         = site;
      this.email        = email;
      this.logomarca    = logomarca;
      this.ativo        = ativo;
      this.telefone     = telefone;
   }
   @OneToMany(mappedBy="idCliente")
   private List<Usuario> usuarios;
   
     public long getId() {
		return id;
   }

   public void setId(long id) {
	  this.id = id;
   }

   public String getRazaoSocial() {
	  return razaoSocial;
   }

   public void setRazaoSocial(String razaoSocial) {
	  this.razaoSocial = razaoSocial;
   }

   public String getNomeFantasia() {
	  return nomeFantasia;
   }

   public void setNomeFantasia(String nomeFantasia) {
	  this.nomeFantasia = nomeFantasia;
   }
   
   public String getTipoCliente() {
	   return tipoCliente;
   }

   public void setTipoCliente(String tipoCliente) {
	   this.tipoCliente = tipoCliente;
   }

   public String getCnpj() {
	  return cnpj;
   }

   public void setCnpj(String cnpj) {
	  this.cnpj = cnpj;
   }

   public String getEndereco() {
	  return endereco;
   }

   public void setEndereco(String endereco) {
	  this.endereco = endereco;
   }

   public String getBairro() {
	  return bairro;
   }

   public void setBairro(String bairro) {
	  this.bairro = bairro;
   }

   public String getCep() {
	  return cep;
   }

   public void setCep(String cep) {
	  this.cep = cep;
   }

   public String getCidade() {
	  return cidade;
   }

   public void setCidade(String cidade) {
	  this.cidade = cidade;
   }

   public String getUf() {
	  return uf;
   }

   public void setUf(String uf) {
	  this.uf = uf;
   }

   public String getSite() {
	  return site;
   }

   public void setSite(String site) {
	  this.site = site;
   }

   public String getEmail() {
	  return email;
   }

   public void setEmail(String email) {
	  this.email = email;
   }

   public static long getSerialversionuid() {
      return serialVersionUID;
   }

   public byte[] getLogomarca() {
	  return logomarca;
   }

   public void setLogomarca(byte[] logomarca) {
	  this.logomarca = logomarca;
   }

   public String getAtivo() {
	  return ativo;
   }

   public void setAtivo(String ativo) {
	  this.ativo = ativo;
   }

   public String getTelefone() {
	  return telefone;
   }

   public void setTelefone(String telefone) {
	  this.telefone = telefone;
   }

   public long getIdClienteSelecionado() {
	  return idClienteSelecionado;
   }

   public void setIdClienteSelecionado(Long row) {
	  this.idClienteSelecionado = row;
   }

}
